package code05_方法;

/**
 * @author 黄衡熙
 * @version 1.0
 * @date 2025年07月17日10:08
 */
public class Test01_方法的定义 {

    // 方法必须处于类中,可以在类中的任意位置
    // 语法:修饰符 返回值类型 方法名(参数列表){方法体}

    // 此处可以定义方法
    public static void a() {
        System.out.println("这是a方法");
    }

    // main方法也是一个方法,此处方法的方法名为main,方法的参数是一个数组String[] args
    public static void main(String[] args) {
        System.out.println("******************调用当前类中的方法******************");
        // 方法中不能定义方法
        // main属于主程序入口,如果需要执行某个方法,必须在main方法调用对应方法
//        a();
        // 调用c方法的时候,由于c方法没有做任何额外处理,而是直接调用了a方法与b方法
        // 因此,此处调用c方法本质上就是执行了a方法与b方法
        c();

        // 当调用的方法存在返回值的时候,可以通过变量来接收返回值
        // 接收返回值的变量其类型必须与方法返回值类型一致
        int sum = sum(1, 2);
        System.out.println("当前方法返回值为:" + sum);

        System.out.println("******************调用其他类中的方法******************");

        // 如果需要调用另一个类中的static修饰的方法
        // 可以通过类名.方法名(参数列表)进行调用
        SomeClass.test();
        int mul = SomeClass.mul(2, 3);
        System.out.println("2*3=" + mul);
    }

    // 此处可以定义方法
    // 方法可以有参数
    // 参数语法与变量的声明一致,参数类型 参数名
    // 参数的赋值不在当前方法中,而在于调用方法时
    public static void b(String s, int i) {
        System.out.println("第一个参数:" + s);
        // 在方法中,如果方法没有返回值也可以直接使用return
        // return是一个关键字,其作用类似于break与continue
        // return表示退出方法
        // 在方法执行的时候,如果遇到return关键字则表示退出方法,不再执行return后面的内容
        // return 后面如果存在代码,会编译报错,因此return后面的代码永远不会执行
        System.out.println("第二个参数:" + i);
        return;
    }

    // 可以定义方法的返回值类型
    // 如果定义了方法的返回值类型,那么该方法必须存在返回值
    // 如果没有返回值,则编译报错
    // 通过return 值表示该方法的返回值
    // return 值的代码必须处于方法逻辑上的最后一行
    // 如果方法中存在分支,每一个分支的最后一行都必须是return 值
    public static int sum(int i, int j) {
        return i + j;
    }

    public static void c() {
        // 方法的调用可以在任意方法中进行调用
        // 在此处可以调用其他方法
        // 如果直接调用当前类中由static修饰的方法
        // 如果被调用的方法没有参数,直接通过方法名()进行调用
        a();
        // 如果被调用的方法存在参数,则必须通过方法名(参数值...)来进行调用
        // 方法中有几个参数,调用时必须传递几个对应类型的值
        b("admin", 2);
    }

}
// 类的外面不能定义方法